//
//  LSTabBar.swift
//  新浪微博---01次
//
//  Created by 李宗帅 on 16/5/3.
//  Copyright © 2016年 LS. All rights reserved.
//

import UIKit
//代码实现自定义视图
class LSTabBar: UITabBar {
    
    
    //第一步:定义一个闭包属性
    var closure: (()->())?
    
    
    //子类要去调用父类的方法
    override init(frame: CGRect) {
        super.init(frame: frame)
        
        //添加button
        setupUI()
    }
    //自动提示
    //StroyBoard自定义视图的初始化方法走 init?(code aDecoder:NSCoder)
    //如果你通过SB来自定义视图,系统会抛出一个提示 提示吧定义代码放在initCode里边
    //fataError  是swfit的崩溃的提示方法
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    //这个方法,用于添加子控件和设置子控件的约束
    private func setupUI(){
        addSubview(composeButton2)
    }
    
    override func layoutSubviews() {
        //记得要调用父类的方法
        super.layoutSubviews()
        
        //定义一个索引
        var index: CGFloat = 0
        
        //设置按钮的一个宽度
        let width = bounds.width / 5.0
        
        //我们需要知道子空间或者拿到子空间来设置
        for subview in subviews {
            
            //因为 NSClassFromString("UITabBarButton") -> AnyClass?  
            //返回的是可选项  所以要进行强行解包
            //能够将 字符串转换成类名
            if subview .isKindOfClass(NSClassFromString("UITabBarButton")!) {
                
                //设置控件位置
                subview.frame = CGRectMake(index*width, 0, width, bounds.height)
                
                //索引值改变
                index += 1;
                
                if index == 2 {
                    index += 1
                }
            }

        }
        composeButton2.frame = CGRectMake(width*2, 0, width, bounds.height)
    }

    //按钮点击的事件
    func showPublish(){
        //回调的话可以用:代理,闭包,通知
        //闭包为什么存在? -- 保存一段代码块,当需要的时候调用执行  多用于  回调
        //不能在View里进行视图控制器的跳转
        
        //视图控制器的跳转  必须在控制器里
        //第二步,调用闭包
        closure?()
    }
    
    // 懒加载添加一个按钮 -- 在swfit里边
    //第一种写法
    lazy var composeButton = UIButton(type: UIButtonType.Custom)
    //第二种写法 -- 懒加载相当于闭包
    lazy var composeButton2: UIButton = {
       
        let button = UIButton(type: UIButtonType.Custom)
        
        button.setBackgroundImage(UIImage(named: "tabbar_compose_button"), forState: UIControlState.Normal)
        
        button.setBackgroundImage(UIImage(named: "tabbar_compose_button_highlighted"), forState: UIControlState.Highlighted)
        
        button.setImage(UIImage(named: "tabbar_compose_icon_add"), forState: UIControlState.Normal)
        
        button.setImage(UIImage(named: "tabbar_compose_icon_add_highlighted"), forState: UIControlState.Highlighted)
        
        //给按钮一个大小
        button.sizeToFit()
        
        //给按钮添加点击事件
        button.addTarget(self, action: "showPublish", forControlEvents: UIControlEvents.TouchUpInside)
        
        return button
    }()
}
